// --------------------------------------------------------------------------------------------
// Version: MPL 1.1/GPL 2.0/LGPL 2.1
// 
// The contents of this file are subject to the Mozilla Public License Version
// 1.1 (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
// http://www.mozilla.org/MPL/
// 
// Software distributed under the License is distributed on an "AS IS" basis,
// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
// for the specific language governing rights and limitations under the
// License.
// 
// <remarks>
// Generated by IDLImporter from file nsIWebBrowserFind.idl
// 
// You should use these interfaces when you access the COM objects defined in the mentioned
// IDL/IDH file.
// </remarks>
// --------------------------------------------------------------------------------------------
namespace Gecko
{
	using System;
	using System.Runtime.InteropServices;
	using System.Runtime.InteropServices.ComTypes;
	using System.Runtime.CompilerServices;
	
	
	/// <summary>
    /// nsIWebBrowserFind
    ///
    /// Searches for text in a web browser.
    ///
    /// Get one by doing a GetInterface on an nsIWebBrowser.
    ///
    /// By default, the implementation will search the focussed frame, or
    /// if there is no focussed frame, the web browser content area. It
    /// does not by default search subframes or iframes. To change this
    /// behaviour, and to explicitly set the frame to search,
    /// QueryInterface to nsIWebBrowserFindInFrames.
    /// </summary>
	[ComImport()]
	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
	[Guid("2f977d44-5485-11d4-87e2-0010a4e75ef2")]
	public interface nsIWebBrowserFind
	{
		
		/// <summary>
        /// findNext
        ///
        /// Finds, highlights, and scrolls into view the next occurrence of the
        /// search string, using the current search settings. Fails if the
        /// search string is empty.
        ///
        /// @return  Whether an occurrence was found
        /// </summary>
		[return: MarshalAs(UnmanagedType.U1)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		bool FindNext();
		
		/// <summary>
        /// searchString
        ///
        /// The string to search for. This must be non-empty to search.
        /// </summary>
		[return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalType = "Gecko.CustomMarshalers.WStringMarshaler")]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		string GetSearchStringAttribute();
		
		/// <summary>
        /// searchString
        ///
        /// The string to search for. This must be non-empty to search.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void SetSearchStringAttribute([MarshalAs(UnmanagedType.CustomMarshaler, MarshalType = "Gecko.CustomMarshalers.WStringMarshaler")] string aSearchString);
		
		/// <summary>
        /// findBackwards
        ///
        /// Whether to find backwards (towards the beginning of the document).
        /// Default is false (search forward).
        /// </summary>
		[return: MarshalAs(UnmanagedType.U1)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		bool GetFindBackwardsAttribute();
		
		/// <summary>
        /// findBackwards
        ///
        /// Whether to find backwards (towards the beginning of the document).
        /// Default is false (search forward).
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void SetFindBackwardsAttribute([MarshalAs(UnmanagedType.U1)] bool aFindBackwards);
		
		/// <summary>
        /// wrapFind
        ///
        /// Whether the search wraps around to the start (or end) of the document
        /// if no match was found between the current position and the end (or
        /// beginning). Works correctly when searching backwards. Default is
        /// false.
        /// </summary>
		[return: MarshalAs(UnmanagedType.U1)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		bool GetWrapFindAttribute();
		
		/// <summary>
        /// wrapFind
        ///
        /// Whether the search wraps around to the start (or end) of the document
        /// if no match was found between the current position and the end (or
        /// beginning). Works correctly when searching backwards. Default is
        /// false.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void SetWrapFindAttribute([MarshalAs(UnmanagedType.U1)] bool aWrapFind);
		
		/// <summary>
        /// entireWord
        ///
        /// Whether to match entire words only. Default is false.
        /// </summary>
		[return: MarshalAs(UnmanagedType.U1)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		bool GetEntireWordAttribute();
		
		/// <summary>
        /// entireWord
        ///
        /// Whether to match entire words only. Default is false.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void SetEntireWordAttribute([MarshalAs(UnmanagedType.U1)] bool aEntireWord);
		
		/// <summary>
        /// matchCase
        ///
        /// Whether to match case (case sensitive) when searching. Default is false.
        /// </summary>
		[return: MarshalAs(UnmanagedType.U1)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		bool GetMatchCaseAttribute();
		
		/// <summary>
        /// matchCase
        ///
        /// Whether to match case (case sensitive) when searching. Default is false.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void SetMatchCaseAttribute([MarshalAs(UnmanagedType.U1)] bool aMatchCase);
		
		/// <summary>
        /// searchFrames
        ///
        /// Whether to search through all frames in the content area. Default is true.
        ///
        /// Note that you can control whether the search propagates into child or
        /// parent frames explicitly using nsIWebBrowserFindInFrames, but if one,
        /// but not both, of searchSubframes and searchParentFrames are set, this
        /// returns false.
        /// </summary>
		[return: MarshalAs(UnmanagedType.U1)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		bool GetSearchFramesAttribute();
		
		/// <summary>
        /// searchFrames
        ///
        /// Whether to search through all frames in the content area. Default is true.
        ///
        /// Note that you can control whether the search propagates into child or
        /// parent frames explicitly using nsIWebBrowserFindInFrames, but if one,
        /// but not both, of searchSubframes and searchParentFrames are set, this
        /// returns false.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void SetSearchFramesAttribute([MarshalAs(UnmanagedType.U1)] bool aSearchFrames);
	}
	
	/// <summary>
    /// nsIWebBrowserFindInFrames
    ///
    /// Controls how find behaves when multiple frames or iframes are present.
    ///
    /// Get by doing a QueryInterface from nsIWebBrowserFind.
    /// </summary>
	[ComImport()]
	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
	[Guid("e0f5d182-34bc-11d5-be5b-b760676c6ebc")]
	public interface nsIWebBrowserFindInFrames
	{
		
		/// <summary>
        /// currentSearchFrame
        ///
        /// Frame at which to start the search. Once the search is done, this will
        /// be set to be the last frame searched, whether or not a result was found.
        /// Has to be equal to or contained within the rootSearchFrame.
        /// </summary>
		[return: MarshalAs(UnmanagedType.Interface)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		nsIDOMWindow GetCurrentSearchFrameAttribute();
		
		/// <summary>
        /// currentSearchFrame
        ///
        /// Frame at which to start the search. Once the search is done, this will
        /// be set to be the last frame searched, whether or not a result was found.
        /// Has to be equal to or contained within the rootSearchFrame.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void SetCurrentSearchFrameAttribute([MarshalAs(UnmanagedType.Interface)] nsIDOMWindow aCurrentSearchFrame);
		
		/// <summary>
        /// rootSearchFrame
        ///
        /// Frame within which to confine the search (normally the content area frame).
        /// Set this to only search a subtree of the frame hierarchy.
        /// </summary>
		[return: MarshalAs(UnmanagedType.Interface)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		nsIDOMWindow GetRootSearchFrameAttribute();
		
		/// <summary>
        /// rootSearchFrame
        ///
        /// Frame within which to confine the search (normally the content area frame).
        /// Set this to only search a subtree of the frame hierarchy.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void SetRootSearchFrameAttribute([MarshalAs(UnmanagedType.Interface)] nsIDOMWindow aRootSearchFrame);
		
		/// <summary>
        /// searchSubframes
        ///
        /// Whether to recurse down into subframes while searching. Default is true.
        ///
        /// Setting nsIWebBrowserfind.searchFrames to true sets this to true.
        /// </summary>
		[return: MarshalAs(UnmanagedType.U1)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		bool GetSearchSubframesAttribute();
		
		/// <summary>
        /// searchSubframes
        ///
        /// Whether to recurse down into subframes while searching. Default is true.
        ///
        /// Setting nsIWebBrowserfind.searchFrames to true sets this to true.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void SetSearchSubframesAttribute([MarshalAs(UnmanagedType.U1)] bool aSearchSubframes);
		
		/// <summary>
        /// searchParentFrames
        ///
        /// Whether to allow the search to propagate out of the currentSearchFrame into its
        /// parent frame(s). Search is always confined within the rootSearchFrame. Default
        /// is true.
        ///
        /// Setting nsIWebBrowserfind.searchFrames to true sets this to true.
        /// </summary>
		[return: MarshalAs(UnmanagedType.U1)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		bool GetSearchParentFramesAttribute();
		
		/// <summary>
        /// searchParentFrames
        ///
        /// Whether to allow the search to propagate out of the currentSearchFrame into its
        /// parent frame(s). Search is always confined within the rootSearchFrame. Default
        /// is true.
        ///
        /// Setting nsIWebBrowserfind.searchFrames to true sets this to true.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void SetSearchParentFramesAttribute([MarshalAs(UnmanagedType.U1)] bool aSearchParentFrames);
	}
}
